package xuan.controller.qimen;

import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import xuan.configuration.result.ResponseResult;
import xuan.configuration.result.ResponseResultEnum;
import xuan.dto.qimen.QiMenDunJiaDto;
import xuan.utils.qimen.QiMenDunJia;
import xuan.utils.qimen.settings.QiMenDunJiaJiChuSetting;
import xuan.vo.qimen.QiMenDunJiaVo;

/**
 * 奇门遁甲排盘Controller
 *
 * @author 善待
 */
@RestController
@RequestMapping("/qiMenDunJia")
public class QiMenDunJiaController {

    /**
     * 开始排盘
     *
     * @param dto 奇门遁甲设置接收类
     * @return 奇门遁甲数据
     */
    @PostMapping("/paiPan")
    public ResponseResult<QiMenDunJiaVo> paiPan(@RequestBody QiMenDunJiaDto dto) {

        // 1、拷贝设置
        QiMenDunJiaJiChuSetting setting = new QiMenDunJiaJiChuSetting();
        BeanUtils.copyProperties(dto, setting);

        // 2、排盘
        QiMenDunJia qiMenDunJia = new QiMenDunJia(setting);

        // 3、封装数据
        QiMenDunJiaVo vo = new QiMenDunJiaVo();
        vo.setSolarDate(qiMenDunJia.getSolarDate()); // 公历日期
        vo.setLunarDate(qiMenDunJia.getLunarDate()); // 农历日期
        vo.setSolarStr(qiMenDunJia.getSolarStr()); // 公历日期
        vo.setLunarStr(qiMenDunJia.getLunarStr()); // 农历日期
        vo.setName(qiMenDunJia.getName()); // 姓名
        vo.setSex(qiMenDunJia.getSex()); // 性别
        vo.setAge(qiMenDunJia.getAge()); // 年龄
        vo.setOccupy(qiMenDunJia.getOccupy()); // 占事
        vo.setZao(qiMenDunJia.getZao()); // 造
        vo.setXingQi(qiMenDunJia.getXingQi()); // 星期
        vo.setJiJie(qiMenDunJia.getJiJie()); // 季节
        vo.setShengXiao(qiMenDunJia.getShengXiao()); // 生肖
        vo.setXingZuo(qiMenDunJia.getXingZuo()); // 星座
        vo.setYueXiang(qiMenDunJia.getYueXiang()); // 月相
        vo.setYueJiang(qiMenDunJia.getYueJiang()); // 月将
        vo.setYueJiangShen(qiMenDunJia.getYueJiangShen()); // 月将神
        vo.setWuBuYuShi(qiMenDunJia.getWuBuYuShi()); // 五不遇时
        vo.setBaZi(qiMenDunJia.getBaZi()); // 八字
        vo.setBaZiWuXing(qiMenDunJia.getBaZiWuXing()); // 八字五行
        vo.setBaZiKongWang(qiMenDunJia.getBaZiKongWang()); // 八字空亡
        vo.setBaZiNaYin(qiMenDunJia.getBaZiNaYin()); // 八字纳音
        vo.setYearGan(qiMenDunJia.getYearGan()); // 年干
        vo.setMonthGan(qiMenDunJia.getMonthGan()); // 月干
        vo.setDayGan(qiMenDunJia.getDayGan()); // 日干
        vo.setHourGan(qiMenDunJia.getHourGan()); // 时干
        vo.setYearZhi(qiMenDunJia.getYearZhi()); // 年支
        vo.setMonthZhi(qiMenDunJia.getMonthZhi()); // 月支
        vo.setDayZhi(qiMenDunJia.getDayZhi()); // 日支
        vo.setHourZhi(qiMenDunJia.getHourZhi()); // 时支
        vo.setYearGanZhi(qiMenDunJia.getYearGanZhi()); // 年干支
        vo.setMonthGanZhi(qiMenDunJia.getMonthGanZhi()); // 月干支
        vo.setDayGanZhi(qiMenDunJia.getDayGanZhi()); // 日干支
        vo.setHourGanZhi(qiMenDunJia.getHourGanZhi()); // 时干支
        vo.setYearGanWuXing(qiMenDunJia.getYearGanWuXing()); // 年干五行
        vo.setMonthGanWuXing(qiMenDunJia.getMonthGanWuXing()); // 月干五行
        vo.setDayGanWuXing(qiMenDunJia.getDayGanWuXing()); // 日干五行
        vo.setHourGanWuXing(qiMenDunJia.getHourGanWuXing()); // 时干五行
        vo.setYearZhiWuXing(qiMenDunJia.getYearZhiWuXing()); // 年支五行
        vo.setMonthZhiWuXing(qiMenDunJia.getMonthZhiWuXing()); // 月支五行
        vo.setDayZhiWuXing(qiMenDunJia.getDayZhiWuXing()); // 日支五行
        vo.setHourZhiWuXing(qiMenDunJia.getHourZhiWuXing()); // 时支五行
        vo.setYearGanZhiWuXing(qiMenDunJia.getYearGanZhiWuXing()); // 年干支五行
        vo.setMonthGanZhiWuXing(qiMenDunJia.getMonthGanZhiWuXing()); // 月干支五行
        vo.setDayGanZhiWuXing(qiMenDunJia.getDayGanZhiWuXing()); // 日干支五行
        vo.setHourGanZhiWuXing(qiMenDunJia.getHourGanZhiWuXing()); // 时干支五行
        vo.setYearGanZhiKongWang(qiMenDunJia.getYearGanZhiKongWang()); // 年干支空亡
        vo.setMonthGanZhiKongWang(qiMenDunJia.getMonthGanZhiKongWang()); // 月干支空亡
        vo.setDayGanZhiKongWang(qiMenDunJia.getDayGanZhiKongWang()); // 日干支空亡
        vo.setHourGanZhiKongWang(qiMenDunJia.getHourGanZhiKongWang()); // 时干支空亡
        vo.setYearGanZhiNaYin(qiMenDunJia.getYearGanZhiNaYin()); // 年干支纳音
        vo.setMonthGanZhiNaYin(qiMenDunJia.getMonthGanZhiNaYin()); // 月干支纳音
        vo.setDayGanZhiNaYin(qiMenDunJia.getDayGanZhiNaYin()); // 日干支纳音
        vo.setHourGanZhiNaYin(qiMenDunJia.getHourGanZhiNaYin()); // 时干支纳音
        vo.setPrevJie(qiMenDunJia.getPrevJie()); // 上一节
        vo.setPrevJieDateStr(qiMenDunJia.getPrevJieDateStr()); // 上一节日期
        vo.setPrevJieDay(qiMenDunJia.getPrevJieDay()); // 距上一节天数
        vo.setNextJie(qiMenDunJia.getNextJie()); // 下一节
        vo.setNextJieDateStr(qiMenDunJia.getNextJieDateStr()); // 下一节日期
        vo.setNextJieDay(qiMenDunJia.getNextJieDay()); // 距下一节天数
        vo.setChuShengJie(qiMenDunJia.getChuShengJie()); // 出生节
        vo.setPrevQi(qiMenDunJia.getPrevQi()); // 上一气
        vo.setPrevQiDateStr(qiMenDunJia.getPrevQiDateStr()); // 上一气日期
        vo.setPrevQiDay(qiMenDunJia.getPrevQiDay()); // 距上一气天数
        vo.setNextQi(qiMenDunJia.getNextQi()); // 下一气
        vo.setNextQiDateStr(qiMenDunJia.getNextQiDateStr()); // 下一气日期
        vo.setNextQiDay(qiMenDunJia.getNextQiDay()); // 距下一气天数
        vo.setChuShengQi(qiMenDunJia.getChuShengQi()); // 出生气
        vo.setFuTou(qiMenDunJia.getFuTou()); // 符头
        vo.setJieQi(qiMenDunJia.getJieQi()); // 节气
        vo.setSanYuan(qiMenDunJia.getSanYuan()); // 三元
        vo.setYinYangDun(qiMenDunJia.getYinYangDun()); // 阴阳遁
        vo.setJuShu(qiMenDunJia.getJuShu()); // 局数
        vo.setXunShou(qiMenDunJia.getXunShou()); // 旬首
        vo.setXunShouYiZhang(qiMenDunJia.getXunShouYiZhang()); // 旬首仪仗
        vo.setZhiFu(qiMenDunJia.getZhiFu()); // 值符
        vo.setZhiShi(qiMenDunJia.getZhiShi()); // 值使
        vo.setLiuJiaXunKong(qiMenDunJia.getLiuJiaXunKong()); // 六甲旬空
        vo.setLiuJiaXunKongGongWei(qiMenDunJia.getLiuJiaXunKongGongWei()); // 六甲旬空落宫
        vo.setLiuJiaXunKongGongWeiMark(qiMenDunJia.getLiuJiaXunKongGongWeiMark()); // 六甲旬空落宫标识
        vo.setYiMa(qiMenDunJia.getYiMa()); // 驿马
        vo.setYiMaGongWei(qiMenDunJia.getYiMaGongWei()); // 驿马落宫
        vo.setYiMaGongWeiMark(qiMenDunJia.getYiMaGongWeiMark()); // 驿马落宫标识
        vo.setDiPan(qiMenDunJia.getDiPan()); // 地盘
        vo.setTianPan(qiMenDunJia.getTianPan()); // 天盘
        vo.setRenPan(qiMenDunJia.getRenPan()); // 人盘
        vo.setShenPan(qiMenDunJia.getShenPan()); // 神盘
        vo.setTianPanQiYiTianQinNo(qiMenDunJia.getTianPanQiYiTianQinNo()); // 天盘奇仪（不包含[天禽星]）
        vo.setTianPanQiYiTianQinYes(qiMenDunJia.getTianPanQiYiTianQinYes()); // 天盘奇仪（只包含[天禽星]）
        vo.setTianYi(qiMenDunJia.getTianYi()); // 天乙
        vo.setDiYi(qiMenDunJia.getDiYi()); // 地乙
        vo.setTaiYi(qiMenDunJia.getTaiYi()); // 太乙
        vo.setAnGan(qiMenDunJia.getAnGan()); // 暗干
        vo.setJiuDun(qiMenDunJia.getJiuDun()); // 九遁
        vo.setNeiWaiGongWeiMark(qiMenDunJia.getNeiWaiGongWeiMark()); // 内外宫位标识
        vo.setNeiWaiGongWeiInfo(qiMenDunJia.getNeiWaiGongWeiInfo()); // 内外宫位信息
        vo.setTianMen(qiMenDunJia.getTianMen()); // 天门
        vo.setDiHu(qiMenDunJia.getDiHu()); // 地户
        vo.setFuYin(qiMenDunJia.getFuYin()); // 伏吟
        vo.setFanYin(qiMenDunJia.getFanYin()); // 反吟
        vo.setLiuYiJiXing(qiMenDunJia.getLiuYiJiXing()); // 六仪击刑
        vo.setQiYiRuMu(qiMenDunJia.getQiYiRuMu()); // 奇仪入墓
        vo.setLiuYiJiXingRuMuTianQinNoStatus(qiMenDunJia.getLiuYiJiXingRuMuTianQinNoStatus()); // 六仪击刑、奇仪入墓状态（不包含[天禽星]）
        vo.setLiuYiJiXingRuMuTianQinYesStatus(qiMenDunJia.getLiuYiJiXingRuMuTianQinYesStatus()); // 六仪击刑、奇仪入墓状态（只包含[天禽星]）
        vo.setMenPoStatus(qiMenDunJia.getMenPoStatus()); // 门迫状态
        vo.setShiGanKeYing(qiMenDunJia.getShiGanKeYing()); // 十干克应
        vo.setBaMenKeYing(qiMenDunJia.getBaMenKeYing()); // 八门克应
        vo.setBaMenJingYing(qiMenDunJia.getBaMenJingYing()); // 八门静应
        vo.setBaMenDongYing(qiMenDunJia.getBaMenDongYing()); // 八门动应
        vo.setXingMenKeYing(qiMenDunJia.getXingMenKeYing()); // 星门克应
        vo.setJiuXingShiYing(qiMenDunJia.getJiuXingShiYing()); // 九星时应
        vo.setBaGuaWangShuai(qiMenDunJia.getBaGuaWangShuai()); // 八卦旺衰
        vo.setBaMenWangShuai(qiMenDunJia.getBaMenWangShuai()); // 八门旺衰
        vo.setJiuXingWangShuai(qiMenDunJia.getJiuXingWangShuai()); // 九星旺衰
        vo.setBaShenLuoGongStatus(qiMenDunJia.getBaShenLuoGongStatus()); // 八神落宫状态
        vo.setBaMenLuoGongStatus(qiMenDunJia.getBaMenLuoGongStatus()); // 八门落宫状态
        vo.setJiuXingLuoGongStatus(qiMenDunJia.getJiuXingLuoGongStatus()); // 九星落宫状态
        vo.setDiPanQiYiLuoGongLink(qiMenDunJia.getDiPanQiYiLuoGongLink()); // 地盘奇仪与落宫地支的关系
        vo.setTianPanQiYiLuoGongTianQinNoLink(qiMenDunJia.getTianPanQiYiLuoGongTianQinNoLink()); // 天盘奇仪与落宫地支的关系（不包含[天禽星]）
        vo.setTianPanQiYiLuoGongTianQinYesLink(qiMenDunJia.getTianPanQiYiLuoGongTianQinYesLink()); // 天盘奇仪与落宫地支的关系（只包含[天禽星]）

        // 4、返回数据
        return ResponseResult.result(ResponseResultEnum.SUCCESS, vo);

    }


}
